home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / mail / mh / contrib / jpeek / pickthis < prev    next >
Text File  |  1992-08-09  |  2KB  |  85 lines

  1. #! /bin/sh
  2. # $Header: /home/jerry/.bin/RCS/pickthis,v 1.6 92/08/10 10:56:17 jerry mh_contrib $
  3. ###    pickthis - search messages (default: all) for one with same subject
  4. ###    Usage: pickthis [+folder|@folder] [msgs to search]
  5. ##
  6. ##    pickthis GRABS THE Subject: HEADER FROM THE CURRENT MESSAGE,
  7. ##    STRIPS OFF ANY Re:, RE:, ETC. FROM THE FRONT OF THE SUBJECT,
  8. ##    THEN SEARCHES FOR OTHER MESSAGES WITH THAT SUBJECT.  
  9. ##    IT STORES THE LIST OF MESSAGES IN THE SEQUENCE NAMED picked
  10. ##    (SO YOU CAN USE THEM LATER); IT scanS THE SEQUENCE BEFORE IT QUITS.
  11. ##
  12. ##    BY DEFAULT, pickthis SEARCHES ALL MESSAGES IN THE CURRENT FOLDER.
  13. ##    IF YOU GIVE IT A LIST OF MESSAGES OR A FOLDER NAME, IT'LL SEARCH THOSE.
  14. #
  15. #    NOTE TO HACKERS: TABSTOPS SET AT 4 IN THIS CODE
  16. #
  17. #    USE AT YOUR OWN RISK.  SEEMS TO WORK, BUT IT'S YOUR RESPONSIBILITY!
  18. #    PLEASE TELL ME ABOUT BUGS AND FIXES: Jerry Peek, jerry@ora.com
  19.  
  20. myname="`basename $0`"
  21.  
  22. # GET SUBJECT OF THIS MESSAGE WITHOUT ANY Re: ON FRONT.
  23. # ESCAPE METACHARACTERS LIKE [, ], ETC.:
  24. if subj="`scan -width 300 -format '%{subject}' cur`"
  25. then
  26.     subj=`echo "$subj" |
  27.     sed -e '
  28.     /^[Rr][Ee]:/ {
  29.     :rezap
  30.             s/^[Rr][Ee]: *//
  31.             /^[Rr][Ee]:/b rezap
  32.     }
  33.     s/\*/\\\\*/g
  34.     s/\./\\\\./g
  35.     s/\\$/\\\\$/g
  36.     s/\]/\\\\]/g
  37.     s/\[/\\\\[/g'`
  38. else
  39.     echo 1>&2 "$myname quitting: can't find subject of current message:
  40.     $subj" 
  41.     exit 1
  42. fi
  43.  
  44. for arg
  45. do
  46.     case "$arg" in
  47.     [+@]*)
  48.         case "$gotfdr" in
  49.         "")    gotfdr=yes ;;
  50.         *)    echo "$myname quitting: '$arg': only one folder at a time!" 1>&2
  51.             exit
  52.             ;;
  53.         esac
  54.  
  55.         # MAKE SURE FOLDER EXISTS SO folder WON'T ASK "create?" (GRRRR...):
  56.         if [ -d `mhpath $arg` ]
  57.         then
  58.             if folder -push $arg > /dev/null
  59.             then
  60.                 # SET trap TO POP FOLDER STACK:
  61.                 trap 'folder -pop >/dev/null; exit' 0
  62.                 trap 'echo $myname: Interrupt!  Cleaning up...' 1 2 15
  63.             else
  64.                 echo "$myname quitting: can't push folder $arg onto stack?" 1>&2
  65.                 exit 1
  66.             fi
  67.         else
  68.             echo "$myname quitting: folder '${arg}' doesn't exist?"
  69.             exit 1
  70.         fi
  71.         ;;
  72.     *)    range="$range $arg" ;;
  73.     esac
  74. done
  75.  
  76. # SEARCH FOR MESSAGE AND scan IF WE FOUND ANY.  DEFAULT TO all MSGS IN FOLDER:
  77. if pick -subject "$subj" $range -seq picked
  78. then
  79.     # THIS exitS WITH scan'S EXIT STATUS:
  80.     scan picked
  81.     exit
  82. else
  83.     exit 1
  84. fi
  85.